package com.yy.kit.log;

import com.xiaoleilu.hutool.log.Log;
import com.xiaoleilu.hutool.log.StaticLog;

/**
 * <p>
 * 打印日志的工具类
 * </p>
 *
 * @author 杨阳
 * @since 2017年9月5日9:26:16
 */
public class YYLogKits {
    /**
     * <p>
     * 获得日志类对象
     * </p>
     *
     * @param clazz 需要打印日志的类
     * @return {@link Log}
     * @author 杨阳
     * @since 2017年9月7日
     */
    private static Log getLog(Class<?> clazz) {
        return StaticLog.get(clazz);
    }

    /**
     * <p>
     * 以info级别打印日志
     * </p>
     *
     * @param format    格式化字符串
     * @param arguments 要打印的参数
     * @author 杨阳
     * @since 2017年9月7日
     */
    public static void info(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).info(format, arguments);
    }

    /**
     * 以debug级别打印日志
     *
     * @param format    格式化字符串
     * @param arguments 要打印的参数
     */
    public static void debug(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).debug(format, arguments);
    }

    /**
     * 以error级别打印日志
     *
     * @param format    格式化字符串
     * @param arguments 要打印的参数
     */
    public static void error(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).error(format, arguments);
    }

    /**
     * 以warn级别打印日志
     *
     * @param format    格式化字符串
     * @param arguments 要打印的参数
     */
    public static void warn(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).warn(format, arguments);
    }

    /**
     * <p>
     * 打印异常信息
     * </p>
     *
     * @param format    异常信息格式
     * @param arguments 实际要打印的信息
     * @author 杨阳
     * @since 2017年9月7日
     */
    public static void printException(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).error("┌───────────────────────────────────────────────────────────────────────────┐");
        getLog(clazz).error("├异常信息：" + format, arguments);
        getLog(clazz).error("└───────────────────────────────────────────────────────────────────────────┘");
    }

    /**
     * <p>
     * 打印重要信息
     * </p>
     *
     * @param format    打印信息格式
     * @param arguments 实际要打印的信息
     * @author 杨阳
     * @since 2017年12月8日
     */
    public static void printImportant(Class<?> clazz, String format, Object... arguments) {
        getLog(clazz).warn("┌───────────────────────────────────────────────────────────────────────────┐");
        getLog(clazz).warn("├重要信息:" + format, arguments);
        getLog(clazz).warn("└───────────────────────────────────────────────────────────────────────────┘");
    }
}
